// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by the FlatBuffers compiler. DO NOT EDIT.

package flatbuf

import (
	flatbuffers 
)

// / A data header describing the shared memory layout of a "record" or "row"
// / batch. Some systems call this a "row batch" internally and others a "record
// / batch".
type RecordBatch struct {
	_tab flatbuffers.Table
}

func ( []byte,  flatbuffers.UOffsetT) *RecordBatch {
	 := flatbuffers.GetUOffsetT([:])
	 := &RecordBatch{}
	.Init(, +)
	return 
}

func ( *RecordBatch) ( []byte,  flatbuffers.UOffsetT) {
	._tab.Bytes = 
	._tab.Pos = 
}

func ( *RecordBatch) () flatbuffers.Table {
	return ._tab
}

// / number of records / rows. The arrays in the batch should all have this
// / length
func ( *RecordBatch) () int64 {
	 := flatbuffers.UOffsetT(._tab.Offset(4))
	if  != 0 {
		return ._tab.GetInt64( + ._tab.Pos)
	}
	return 0
}

// / number of records / rows. The arrays in the batch should all have this
// / length
func ( *RecordBatch) ( int64) bool {
	return ._tab.MutateInt64Slot(4, )
}

// / Nodes correspond to the pre-ordered flattened logical schema
func ( *RecordBatch) ( *FieldNode,  int) bool {
	 := flatbuffers.UOffsetT(._tab.Offset(6))
	if  != 0 {
		 := ._tab.Vector()
		 += flatbuffers.UOffsetT() * 16
		.Init(._tab.Bytes, )
		return true
	}
	return false
}

func ( *RecordBatch) () int {
	 := flatbuffers.UOffsetT(._tab.Offset(6))
	if  != 0 {
		return ._tab.VectorLen()
	}
	return 0
}

// / Nodes correspond to the pre-ordered flattened logical schema
// / Buffers correspond to the pre-ordered flattened buffer tree
// /
// / The number of buffers appended to this list depends on the schema. For
// / example, most primitive arrays will have 2 buffers, 1 for the validity
// / bitmap and 1 for the values. For struct arrays, there will only be a
// / single buffer for the validity (nulls) bitmap
func ( *RecordBatch) ( *Buffer,  int) bool {
	 := flatbuffers.UOffsetT(._tab.Offset(8))
	if  != 0 {
		 := ._tab.Vector()
		 += flatbuffers.UOffsetT() * 16
		.Init(._tab.Bytes, )
		return true
	}
	return false
}

func ( *RecordBatch) () int {
	 := flatbuffers.UOffsetT(._tab.Offset(8))
	if  != 0 {
		return ._tab.VectorLen()
	}
	return 0
}

// / Buffers correspond to the pre-ordered flattened buffer tree
// /
// / The number of buffers appended to this list depends on the schema. For
// / example, most primitive arrays will have 2 buffers, 1 for the validity
// / bitmap and 1 for the values. For struct arrays, there will only be a
// / single buffer for the validity (nulls) bitmap
// / Optional compression of the message body
func ( *RecordBatch) ( *BodyCompression) *BodyCompression {
	 := flatbuffers.UOffsetT(._tab.Offset(10))
	if  != 0 {
		 := ._tab.Indirect( + ._tab.Pos)
		if  == nil {
			 = new(BodyCompression)
		}
		.Init(._tab.Bytes, )
		return 
	}
	return nil
}

// / Optional compression of the message body
// / Some types such as Utf8View are represented using a variable number of buffers.
// / For each such Field in the pre-ordered flattened logical schema, there will be
// / an entry in variadicBufferCounts to indicate the number of number of variadic
// / buffers which belong to that Field in the current RecordBatch.
// /
// / For example, the schema
// /     col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
// /     col2: Utf8View
// / contains two Fields with variadic buffers so variadicBufferCounts will have
// / two entries, the first counting the variadic buffers of `col1.beta` and the
// / second counting `col2`'s.
// /
// / This field may be omitted if and only if the schema contains no Fields with
// / a variable number of buffers, such as BinaryView and Utf8View.
func ( *RecordBatch) ( int) int64 {
	 := flatbuffers.UOffsetT(._tab.Offset(12))
	if  != 0 {
		 := ._tab.Vector()
		return ._tab.GetInt64( + flatbuffers.UOffsetT(*8))
	}
	return 0
}

func ( *RecordBatch) () int {
	 := flatbuffers.UOffsetT(._tab.Offset(12))
	if  != 0 {
		return ._tab.VectorLen()
	}
	return 0
}

// / Some types such as Utf8View are represented using a variable number of buffers.
// / For each such Field in the pre-ordered flattened logical schema, there will be
// / an entry in variadicBufferCounts to indicate the number of number of variadic
// / buffers which belong to that Field in the current RecordBatch.
// /
// / For example, the schema
// /     col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
// /     col2: Utf8View
// / contains two Fields with variadic buffers so variadicBufferCounts will have
// / two entries, the first counting the variadic buffers of `col1.beta` and the
// / second counting `col2`'s.
// /
// / This field may be omitted if and only if the schema contains no Fields with
// / a variable number of buffers, such as BinaryView and Utf8View.
func ( *RecordBatch) ( int,  int64) bool {
	 := flatbuffers.UOffsetT(._tab.Offset(12))
	if  != 0 {
		 := ._tab.Vector()
		return ._tab.MutateInt64(+flatbuffers.UOffsetT(*8), )
	}
	return false
}

func ( *flatbuffers.Builder) {
	.StartObject(5)
}
func ( *flatbuffers.Builder,  int64) {
	.PrependInt64Slot(0, , 0)
}
func ( *flatbuffers.Builder,  flatbuffers.UOffsetT) {
	.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(), 0)
}
func ( *flatbuffers.Builder,  int) flatbuffers.UOffsetT {
	return .StartVector(16, , 8)
}
func ( *flatbuffers.Builder,  flatbuffers.UOffsetT) {
	.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(), 0)
}
func ( *flatbuffers.Builder,  int) flatbuffers.UOffsetT {
	return .StartVector(16, , 8)
}
func ( *flatbuffers.Builder,  flatbuffers.UOffsetT) {
	.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(), 0)
}
func ( *flatbuffers.Builder,  flatbuffers.UOffsetT) {
	.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(), 0)
}
func ( *flatbuffers.Builder,  int) flatbuffers.UOffsetT {
	return .StartVector(8, , 8)
}
func ( *flatbuffers.Builder) flatbuffers.UOffsetT {
	return .EndObject()
}